The present invention relates to data processing, and more particularly, to the management of software images.
Generally speaking, a software image is a structure that includes software modules residing on a computer (for example, its operating system, application programs, and/or data).
In some cases, it may be desirable to have multiple operating systems available on the same computer. For example, this may be useful to run programs that require different operating systems, or to test new operating systems or new versions thereof.
For this purpose, it is possible to exploit a multi-boot technique. The multi-boot technique allows installing multiple operating systems on the computer, with the possibility of choosing which one to boot when the computer is started. The desired result is achieved by splitting a hard disk of the computer into multiple partitions, each one defining a logical disk storing a corresponding operating system. The computer boots from a primary partition, which includes a boot loader that allows selecting the actual operating system to be started. Alternatively, it is possible to provide a boot partition with a primary boot loader that is simply used to select the desired operating system; the primary boot loader then invokes a secondary boot loader of the selected operating system for its starting.
However, the multi-boot technique is quite rigid, since the partitions of the hard disk are to be defined in advance. In any case, once the selected operating system has been started it has the entire control of the whole hard disk; therefore, the selected operating system may access the other partitions as well (with the risk of damaging them).
Alternatively, the same result may also be achieved by exploiting a virtualization technique. In this case, a hypervisor is installed on the computer. The hypervisor implements a virtualization layer, which emulates multiple virtual machines each one consisting of an abstract environment giving the appearance of a physical computer (which the virtual machine has sole control of). In this way, it is possible to have different operating systems running independently (even at the same time) on corresponding virtual machines.
However, the virtualization technique requires the installation of a complex infrastructure to manage the virtual machines. Moreover, this involves a performance degradation of the computer (since the operating systems do not run natively on the computer any longer).
Another common need is that of making backup copies of the software image of a computer. For example, this may be useful to restore the content of the computer in case of its malfunctioning.
For this purpose, it is possible to take a snapshot of the software image (i.e., a backup copy thereof in a consistent state at a particular point of time) and the snapshot may be saved onto a backup disk or a backup server. In this way, it is possible to restore the snapshot by re-installing it onto the computer from the backup disk or the backup server. However, both the process of taking the snapshot and the process of restoring the snapshot are very slow. In addition, in the case where the backup server is used, this involves a high consumption of network resources. A network connection with the backup server is required to restore the snapshot from the backup server. Alternatively, it is possible to boot the computer remotely from the snapshot on the backup server. However, in this case the computer has to be always connected to the backup server for its operation. In any case, the operation of the computer over the network results in a degradation of its performance.
U.S. Patent Publication No. 2008/0133208, which is herein incorporated by reference in its entirety, discloses a method for running a virtual machine directly from a computer using a (physical) snapshot. For this purpose, the virtual machine initializes using the physical snapshot as a virtual snapshot representing its initial state. For example, the virtual machine may be used to test updates, with the possibility as well of making the updates available to the computer if the test is successful (as a corresponding new physical snapshot), or to verify whether the execution of suspected programs indicates virus or spyware activities. As above, this requires the installation of a virtualization layer (with the above-mentioned drawbacks).